<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //ES6里的类
      //ES5利用构造函数模拟类的概念
      //ES6修饰类的关键字 : class

      //ES5
      // function Person(name, age) {
      //   this.name = name;
      //   this.age = age;
      // }
      // Person.prototype.fn = function () {
      //   console.log("fn");
      // };
      // let zhangsan = new Person("张三", 20);
      // console.log(zhangsan);

      //ES6类
      //1.类是什么类型  本质上是函数
      //类是构造函数的语法糖
      //类不是对象 里面的方法不能全写
      //自动把constructor里的内容放在构造函数上,其他方法会放在原型上
      //constructor里的属性 其他的表现形式(直接定义在类的下面)
      //把属性拆分成存取器形式
      class Person {
        height = "180cm";
        constructor(name, age) {
          //this.height="178cm"
          this.name = name;
          this.age = age;
        }
        // gender属性的get方法

        get gender() {
          console.log("获取gender属性了");
          return "男";
        }
        set gender(newValue) {
          console.log("新设置的值是", newValue);
        }
        fn() {
          //函数的固定写法
          console.log("fn");
        }
      }
      console.log(typeof Person);
      let zhangsan = new Person("张三", 20);
      console.log(zhangsan);
    </script>
  </body>
</html>
